﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>MouseClick</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/commands.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
</head>
<body>

<h1>MouseClick</h1>

<p>点击或按住一个鼠标按键，或者滚动鼠标滚轮。注意：一般来说，<a href="Click.htm">Click/点击 命令</a> 更加灵活和易用。</p>

<p class="CommandSyntax">MouseClick [, WhichButton , X, Y, ClickCount, Speed, D|U, R]</p>
<h3>参数 </h3>
<table border="1" width="100%" cellspacing="0" cellpadding="3" bordercolor="#C0C0C0">
  <tr>
    <td>WhichButton</td>
    <td><p><u>需要点击的按钮</u>：Left/左键(默认)，Right/右键，Middle/中键(或取这些单词的首字母)，某些鼠标有第三个或第四个键( X1 和 X2 )的话，必须要 Windows2000 以上的版本才支持。例如：<em>MouseClick, X1</em> 。如果省略该参数则默认为左键。</p>
      <p><u>滚动鼠标滚轮</u>：在 Windows NT/2000/XP 或之后d版本中，使用 WheelUp 或者 WU 向上滚动滚轮(远离你)，使用 WheelDown 或 WD 向下滚动滚轮(面向你)。在 1.0.48+ 版本中，分别使用 WheelLeft (或 WL) 或 WheelRight (或 WR) 来向左或向右滚动滚轮 (但是在 Windows Vista 之前的操作系统中没有效果)。<em>ClickCount</em> 参数表示滚动滚轮的次数。</p>
      <p>如果要自动适应用户在控制面板里面对鼠标左右键的交换，使用 <a href="Click.htm">Click/点击 命令</a> 来替换。</p></td>
  </tr>
  <tr>
    <td>X, Y </td>
    <td>鼠标点击位置的横坐标和纵坐标，可以使用 <a href="../Variables.htm#Expressions">expressions/表达式</a> 。坐标默认是相对于当前的窗口，除非设置了不同的 <a href="CoordMode.htm">CoordMode/坐标模式</a> 。如果省略该参数，则默认为当前鼠标位置。</td>
  </tr>
  <tr>
    <td>ClickCount</td>
    <td>鼠标点击次数，可以使用 <a href="../Variables.htm#Expressions">expressions/表达式</a> 。如果省略该参数，则默认点击 1 次。</td>
  </tr>
  <tr>
    <td width="15%">Speed</td>
    <td width="85%"><p>鼠标移动的速度，从 0(最快)到 100(最慢)，可以是 <a href="../Variables.htm#Expressions">expression/表达式</a> 。注意：设置为 0 的时候，鼠标会立即移动到目标位置。如果省略，默认使用 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed/设置鼠标默认移动速度</a> 设置的速度，如果没有设置，则使用 2 。</p>
      <p><em>Speed</em> 参数在 <a href="SendMode.htm">SendInput/SendPlay 模式</a> 中是无效的，在这两种模式中会直接移动鼠标到目标位置(即使 <a href="SetMouseDelay.htm">SetMouseDelay/设置鼠标延时</a> 中有一种模式适用于 SendPlay 模式)。如果需要显示鼠标移动轨迹——比如在向观众演示的时候——可以使用 <a href="Send.htm#Click"><em>SendEvent {Click 100, 200)</em></a> 或者 <a href="SendMode.htm"><em>SendMode Event/发送模式事件</em></a> 。(也可同时设置 <a href="BlockInput.htm">BlockInput/阻止输入</a>)。</p></td>
  </tr>
  <tr>
    <td>D|U</td>
    <td><p>如果省略该参数，每一次点击都会由一次“down/按下”事件和一次“up/释放”事件组成。单独使用的话：<br>
      D = 按住鼠标按键不放(也就是说产生了一次“down/按下”事件)。<br>
      U = 释放鼠标按键(也就是说产生了一次“up/释放”事件)。</p>      </td>
  </tr>
  <tr>
    <td>R</td>
    <td>如果这个参数使用了字母 R 的话，坐标轴参数 X 和 Y 会被当作当前鼠标位置的偏移来处理。也就是说，鼠标会根据设置的坐标参数从当前位置开始往右移 X 像素(如果设置了负值则是往左移)，以及往下移 Y 像素(如果设置了负值则是往上移)。</td>
  </tr>
</table>

<h3>注意</h3>
<p>这个命令使用的发送模式由 <a href="SendMode.htm">SendMode/发送模式</a> 来设置。</p>
<p>更推荐使用 <a href="Click.htm">Click/点击 命令</a> ，因为：</p>
<ol>
  <li>它自动适应用户在控制面板中对鼠标左右键的交换。</li>
  <li>它一般更容易使用。</li>
</ol>
<p>如果需要模拟 Shift + 点击，或者 Ctrl + 点击，在点击命令之前和之后使用 <a href="Send.htm">Send</a> 命令。例如：</p>
<pre><em>; 范例 #1: </em>
Send, {Control down}
MouseClick, left, 55, 233
Send, {Control up}</pre>
<pre>
<em>; 范例 #2:</em>
Send, {Shift down}
MouseClick, left, 55, 233
Send, {Shift up}</pre>
<p>在某些游戏中，<a href="SendMode.htm">SendPlay 模式</a> 比其它的模式具有更好的兼容性。在某些程序或者游戏中，如果鼠标移动速度过快，它们可能无法识别鼠标的移动，这时候可以使用 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed/设置鼠标默认移动速度</a> 来减慢鼠标的移动速度(不过只能在 <a href="SendMode.htm">SendEvnet 模式</a> 中有效)。</p>
<p> 有些程序不接受 <em>ClickCount</em> 大于1的情况，对于这些程序，可以使用一个如下的 <a href="Loop.htm">Loop/循环</a> 来解决：</p>
<pre>Loop 5
    Click WheelUp</pre>
<p><a href="BlockInput.htm">BlockInput/阻止输入</a> 命令可以防止用户在脚本运行过程中因移动或点击鼠标而造成脚本错误。不过在 <a href="SendMode.htm">SendInput</a> 和 <a href="SendMode.htm">SendPlay</a> 模式中一般不需要使用这个命令，因为它们本身就自动推迟了用户对鼠标的操作。</p>
<p>在每次鼠标按下和鼠标释放之后都会有一个自动的延时(除了 <a href="SendMode.htm">SendInput 模式</a> 和滚动鼠标滚轮)，使用 <a href="SetMouseDelay.htm">SetMouseDelay/设置鼠标延时</a> 来改变延时的长度。</p>
<h3>相关命令</h3>
<p><a href="CoordMode.htm">CoordMode</a>, <a href="SendMode.htm">SendMode</a>, <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a>,<a href="SetMouseDelay.htm"> SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseGetPos.htm">MouseGetPos</a>,
  <a href="MouseMove.htm">MouseMove</a>, <a href="ControlClick.htm">ControlClick</a>, <a href="BlockInput.htm">BlockInput</a></p>
<h3>示例</h3>
<pre class="NoIndent"><em>; 在鼠标当前位置双击：</em>
MouseClick, left
MouseClick, left

<em>; 和上面一样：</em>
MouseClick, left, , , 2

<em>; 移动到指定的坐标位置然后点击右键一次：</em>
MouseClick, right, 200, 300

<em>; 这里用2个热键模拟了滚动鼠标滚轮：</em>
#up::MouseClick, WheelUp, , , 2  <em>; 滚动2格</em>
#down::MouseClick, WheelDown, , , 2</pre>

</body>
</html>
